package hcn.util.validation;

import java.lang.annotation.*;

/**
 * @Author: zhusm@bsoft.com.cn
 *
 * @Description: 字段校验注解
 *
 * @Create: 2019-01-24 10:55
 **/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface ValidationAnnotaion {

    InvokeType type() default InvokeType.STRING;

    int minLength() default 0; //元素长度最小值 仅支持数字和字符串类型

    int maxLength() default Integer.MAX_VALUE; //元素长度最大值 仅支持数字和字符串类型

    double maxValue() default Double.MAX_VALUE; //仅支持数字和字符串类型

    double minValue() default Double.MIN_VALUE; //仅支持数字和字符串类型

//    double doubleMinValu() default Double.MIN_VALUE;

    String errorDescription() default "";//校验不通过说明

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.FIELD})
    @interface Null{
        InvokeType type() default InvokeType.STRING;
        String errorDescription() default "";//校验不通过说明
    }

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.FIELD})
    @interface NotNull{
        InvokeType type() default InvokeType.STRING;
        String errorDescription() default "";//校验不通过说明
    }

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.FIELD})
    @interface FiledExpression{
        String filedExpression() default "";//指定正则表达式

        String errorDescription() default "";//校验不通过说明
    }

}
